// 健康检查接口
// 直接使用 config.js 中定义的全局变量

// 调试信息
console.log('🔧 health.js 文件加载成功');
console.log('🔧 当前 API_BASE_URL:', typeof API_BASE_URL !== 'undefined' ? API_BASE_URL : '未定义');
console.log('🔧 window.API_BASE_URL:', window.API_BASE_URL);
console.log('🔧 window.CONFIG:', window.CONFIG);

/**
 * 健康检查接口 - 测试服务是否正常运行
 * @returns {Promise<Object>} 返回健康检查结果
 */
async function healthCheck() {
    try {
        const url = `${API_BASE_URL}/health`;
        console.log('🔗 健康检查请求URL:', url);
        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
            },
        });

        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }

        const data = await response.json();
        console.log('✅ 健康检查成功:', data);
        return {
            success: true,
            data: data,
            message: '服务运行正常'
        };
    } catch (error) {
        console.error('❌ 健康检查失败:', error);
        return {
            success: false,
            error: error.message,
            message: '服务连接失败'
        };
    }
}

/**
 * 测试接口 - 用于功能测试
 * @param {string} param - 测试参数，默认为 'default_value'
 * @returns {Promise<Object>} 返回测试结果
 */
async function healthTest(param = 'default_value') {
    try {
        const baseUrl = `${API_BASE_URL}/health/test`;
        const url = new URL(baseUrl);
        console.log('🔗 测试接口请求URL:', baseUrl);
        url.searchParams.append('param', param);

        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
            },
        });

        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }

        const data = await response.json();
        console.log('✅ 测试接口调用成功:', data);
        return {
            success: true,
            data: data,
            message: '测试接口调用成功'
        };
    } catch (error) {
        console.error('❌ 测试接口调用失败:', error);
        return {
            success: false,
            error: error.message,
            message: '测试接口调用失败'
        };
    }
}

/**
 * 检查服务状态 - 综合健康检查
 * @returns {Promise<Object>} 返回服务状态信息
 */
async function checkServiceStatus() {
    console.log('🔍 开始检查服务状态...');
    
    const healthResult = await healthCheck();
    const testResult = await healthTest();
    
    const status = {
        timestamp: new Date().toISOString(),
        health: healthResult,
        test: testResult,
        overall: healthResult.success && testResult.success ? 'healthy' : 'unhealthy'
    };
    
    console.log('📊 服务状态检查完成:', status);
    return status;
}

/**
 * 简单的连接测试 - 快速检查API是否可访问
 * @returns {Promise<boolean>} 返回连接是否成功
 */
async function quickConnectTest() {
    try {
        const response = await fetch(`${API_BASE_URL}/health`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
            },
        });
        
        return response.ok;
    } catch (error) {
        console.error('连接测试失败:', error);
        return false;
    }
}

// 暴露为全局变量，供其他脚本使用
window.HealthAPI = {
    healthCheck,
    healthTest,
    checkServiceStatus,
    quickConnectTest
};

console.log('🔧 HealthAPI 已暴露到全局变量:', window.HealthAPI);
